home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac SampleCode Previous / Geometry Samples- Mac / BoxMooV / sources / BoxMooV_QuickTime.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  3.4 KB  |  154 lines  |  [TEXT/CWIE]

  1. /*  BoxMooV_QuickTime.c                                                                            
  2.  *    
  3.  *    Rick Evans    Sept. 1996                                                
  4.  *    Robert Dierkes                                                                                
  5.  *    (c)1994-96 Apple Computer Inc., All Rights Reserved                                
  6.  *    
  7. */
  8.  
  9. /*------------------*/
  10. /*    Include Files    */
  11. /*------------------*/
  12. #include <Memory.h>
  13. #include <Movies.h>
  14. #include <QDOffscreen.h>
  15.  
  16. #include "QD3D.h"
  17. #include "QD3DStorage.h"
  18.  
  19. #include "BoxMoov_QuickTime.h"
  20.  
  21. /*===========================================================================*\
  22.  *
  23.  *    Routine:    QuickTime_Init()
  24.  *
  25.  *    Comments:    Intialize QuickTime Toolbox.
  26.  *                    
  27.  *
  28. \*===========================================================================*/
  29.  
  30. void QuickTime_Init(
  31.         void)
  32. {
  33.     EnterMovies();
  34. }
  35.  
  36.  
  37.  
  38. /*===========================================================================*\
  39.  *
  40.  *    Routine:    QuickTime_Delete()
  41.  *
  42.  *    Comments:    Stop movie playback, and dispose of its memory
  43.  *                    
  44.  *
  45. \*===========================================================================*/
  46.  
  47. void QuickTime_Delete(
  48.             Movie *moviePtr)
  49. {
  50.     if (*moviePtr != NULL)
  51.     {
  52.         StopMovie(*moviePtr);
  53.         DisposeMovie(*moviePtr);
  54.         ExitMovies();
  55.         *moviePtr = NULL;
  56.     }
  57. }
  58.  
  59. /*===========================================================================*\
  60.  *
  61.  *    Routine:    QuickTime_GetNewMooVTexture()
  62.  *
  63.  *    Comments:    Query user for a MooV File, and set up animated texture
  64.  *                    
  65.  *
  66. \*===========================================================================*/
  67.  
  68. Boolean QuickTime_GetNewMooVTexture(
  69.             Movie *theMovie)
  70. {
  71.     StandardFileReply    reply;
  72.     short                numTypes = 1 ;
  73.     SFTypeList            myTypes = { 'MooV', 0 } ;
  74.  
  75.     /* Clean up any previous movie */
  76.     if (*theMovie != NULL) 
  77.         QuickTime_Delete( theMovie );
  78.     
  79.     /* Get movie file from user */
  80.     StandardGetFilePreview(nil, numTypes, myTypes, &reply);
  81.  
  82.     if ( ! reply.sfGood ) 
  83.         return (false);
  84.  
  85.     return (QuickTime_LoadMovie(&reply.sfFile, theMovie));
  86. }
  87.  
  88. /*===========================================================================*\
  89.  *
  90.  *    Routine:    QuickTime_LoadMovie()
  91.  *
  92.  *    Comments:    Takes a FSSpec and loads a movie into a TQ3StoragePixmap structure
  93.  *
  94. \*===========================================================================*/
  95.  
  96. Boolean        QuickTime_LoadMovie(
  97.             FSSpec         *pFile,
  98.             Movie        *pMovie)
  99. {
  100.     QDErr            err;
  101.     short            fref;
  102.     Rect            bounds;
  103.  
  104.     /* Load movie */
  105.     err = OpenMovieFile(pFile, &fref, fsRdPerm);
  106.     if (err) return false;
  107.  
  108.     err = NewMovieFromFile(pMovie, fref, nil, (StringPtr)nil, newMovieActive, nil);
  109.     if (err) return false;
  110.  
  111.     CloseMovieFile(fref);
  112.     
  113.     /* Figure out movie dimensions */
  114.     /* Set movie to identity matrix. we hope this means "its natural size" */
  115.     SetMovieMatrix(*pMovie, nil);
  116.  
  117. //    GetMovieBox(*pMovie, &bounds);
  118. //    OffsetRect(&bounds, -bounds.left, -bounds.top);
  119.  
  120.     SetRect(&bounds, 0, 0, 128, 128);
  121.     SetMovieBox(*pMovie, &bounds);
  122.  
  123.     return true;
  124.  
  125. }
  126.  
  127.  
  128. /*===========================================================================*\
  129.  *
  130.  *    Routine:    QuickTime_LoopMovie()
  131.  *
  132.  *    Comments:    Start movie playing in a loop
  133.  *                    
  134.  *
  135. \*===========================================================================*/
  136.  
  137. void QuickTime_LoopMovie(Movie    pMovie, GWorldPtr pGWorld)
  138. {
  139.     TimeBase            timeBase;
  140.  
  141.     SetMovieGWorld(pMovie, pGWorld, nil);
  142.  
  143.     /* Draw the movie first */
  144.     MoviesTask(pMovie, 0);
  145.     MoviesTask(pMovie, 0);
  146.  
  147.     /* throw the movie into loop mode */
  148.     timeBase = GetMovieTimeBase(pMovie);
  149.     SetTimeBaseFlags(timeBase, GetTimeBaseFlags(timeBase) | loopTimeBase);
  150.  
  151.     /* start the movie a' playin' */
  152.     StartMovie(pMovie);
  153. }
  154.